package com.lin.comment;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;

/****************************************************************************
 * com.lin.comment DoctorCommentService.java Created on 2016年1月6日
 * @Author: linfenliang
 * @Description:
 * <pre>
 * 移动医疗领域，用户咨询问题时，可能会对咨询进行评价
 * 用户评价后，会触发一系列的操作，比如，评价信息入库，关闭咨询，将评价信息通知给医生
 * 后续还可能触发医生满意度重新计算，以及根据评价满意度自动下发消息给用户
 * 重点是评价操作后，会触发一系列的事件，这些事件在将来可能还会扩展
 * </pre>
 * @Version: 1.0
 ***************************************************************************/
public class DoctorCommentService extends Observable {

	void processDoctorComment(Integer questionId,Integer userId,Integer doctorId,int satified,String content){
		
		System.out.println("通知观察者用户对咨询做出了评价");
		List<Object> list = new ArrayList<Object>();
		list.add(questionId);
		list.add(userId);
		list.add(doctorId);
		list.add(satified);
		list.add(content);
		this.setChanged();
		this.notifyObservers(list);
	}
	public static void main(String[] args) {
		DoctorCommentService doctorCommentService = new DoctorCommentService();
		doctorCommentService.addObserver(new CommentService());
		doctorCommentService.addObserver(new QuestionService());
		doctorCommentService.addObserver(new MessageService());
		doctorCommentService.processDoctorComment(1, 2, 3, 4, "doctor wang is a good doctor");
	}
}
class CommentService implements Observer{
	@Override
	public void update(Observable o, Object arg) {
		System.out.println("评价信息写入DB..."+arg);
	}
}
class QuestionService implements Observer{
	@Override
	public void update(Observable o, Object arg) {
		System.out.println("接收到用户评价咨询消息，根据问题编号查询问题是否关闭"+arg);
		System.out.println("问题未关闭，关闭问题");
	}
}
class MessageService implements Observer{
	@Override
	public void update(Observable o, Object arg) {
		System.out.println("将评价信息推送给医生"+arg);
	}
}